package cn.tedu.mall.producer.preload;


import cn.tedu.mall.producer.mapper.BrandMapper;
import cn.tedu.mall.producer.pojo.vo.BrandListItemVO;
import cn.tedu.mall.producer.repo.IBrandRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;

import java.util.List;

/**
 * 缓存预热组件类
 *
 * 由于另外使用了计划任务（指定执行频率fixedRate的计划任务首次执行是启动项目时），所以，不需要通过此类来实现缓存预热
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Slf4j
// @Component
public class CachePreLoad implements ApplicationRunner {

    @Autowired
    private BrandMapper brandMapper;
    @Autowired
    private IBrandRepository brandRepository;

    public CachePreLoad() {
        log.debug("创建启动自动执行方法的ApplicationRunner对象：CachePreLoad");
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.debug("执行CachePreLoad.run()方法");

        // 将Redis中的品牌列表清除
        brandRepository.deleteList();
        // 从MySQL中读取品牌列表
        List<BrandListItemVO> brands = brandMapper.list();
        // 将品牌列表写入到Redis
        brandRepository.putList(brands);
    }

}
